package exercises.newcoder.solution;

/**
 * <a href="https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&&tqId=11164&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking">
 *     JZ11 二进制中1的个数</a>
 * @author or2
 * @Description 输入一个整数，输出该数32位二进制表示中1的个数。其中负数用补码表示。
 * @create 2021年09月10日 时间: 8:18
 */
public class NumberOf1 {
    public int numberOf1(int n) {
        int ans = 0;
        if (n < 0) {
            n += Integer.MIN_VALUE;
            ans++;
        }
        while (n > 0) {
            if ((n & 1) == 1) {
                ans++;
            }
            n >>>= 1;
        }

        return ans;
    }
}
